home *** CD-ROM | disk | FTP | other *** search
AWK Script | 1996-07-16 | 1.1 KB | 58 lines |
- BEGIN {
- file=ARGV[1];
-
- #print "File=" file
-
- while (getline fname < file > 0) {
- printf ("Working on %s...\n", fname);
-
- while (getline line < fname > 0) {
- #print "\"" line "\""
- if (line == " NAME */") {
- header=1;
- #print "header"
- }
- if (match(line,"__AROS_LH")) {
- if(header)
- {
- match(line,",[ \t]*[A-Za-z_][A-Za-z_0-9]*[ \t]*,[ \t]*$");
- name=substr(line,RSTART,RLENGTH);
- match(name,"[A-Za-z_][A-Za-z_0-9]*");
- name=substr(name,RSTART,RLENGTH);
- #print "Name=" name
- }
- }
- if (line == "/* LOCATION */") {
- #print "Location"
- if (header) {
- getline line < fname;
- match(line,",[ \t]*[0-9]*[ \t]*,");
- offset=int(substr(line,RSTART+1,RLENGTH-2));
- lvo[name]=offset; header=0;
- }
- #print "LVO=" offset
- }
- }
-
- print fname
- close (fname);
- }
-
- close (file);
- }
- END {
-
- # print "/* Only for tests */"
- # for (x in lvo)
- # {
- # printf ("extern void Exec_%s (void);\n", x);
- # }
- print "struct\n{\n LONG it_Offset;\n APTR it_Func;\n}"
- print "InitTable[] =\n{"
- for (x in lvo)
- {
- printf(" %3d, Exec_%s,\n", lvo[x],x);
- }
- print "};"
- }
-